package cn.edu.hnu.gpg.service;

import cn.edu.hnu.gpg.dao.AnswerMapper;
import cn.edu.hnu.gpg.entity.Answer;
import cn.edu.hnu.gpg.entity.Question;

import java.util.List;

public interface AnswerService {

    /**
     * 获取一个问题所有的回复
     * @param question question对象，待获取回答的问题
     * @return 该问题的所有回复
     */
    List<Answer> getAllAnswerToQuestion(Question question);

    /**
     * 获取一个问题所有的回复
     * @param question_id question对象对应的索引，待获取回答的问题索引
     * @return 该问题的所有回复
     */
    List<Answer> getAllAnswerToQuestion(int question_id);

    /**
     * 用于获取某个问题的父回答描述
     * @param to_answer_id 回复的对象的id
     * @return 父回答的描述
     */
    String getFatherContent(int to_answer_id);

    /**
     * 用于获取某个问题的父回答描述
     * @param answer answer对象
     * @return 父回答的描述
     */
    String getFatherContent(Answer answer);

    /**
     * 用于进行回复
     * @param author 进行回复的用户的id
     * @param question_id 被回复的问题的id
     * @param to_answer_id 回复的父回复的id，默认为0；如果是对某一回复的回复，则为对应的回复的id
     * @param content 回复的内容
     * @return 是否创建成功
     */
    int createAnswer(int author,int question_id,int to_answer_id,String content);

    /**
     * 用于进行回复
     * @param author 进行回复的用户的id
     * @param question_id 被回复的问题的id
     * @param content 回复的内容
     * @return 是否创建成功
     */
    int createAnswer(int author,int question_id,String content);


    int updateByQuestionId(int question_id,String content);
    /**
     * 删除某个回答
     * @param answer_id 回答的索引号（answer_id）
     * @return 是否删除成功
     */
    boolean deleteAnswer(int answer_id);
}
